package asia.hymsk.spring.controller;


import asia.hymsk.spring.anno.Log;
import asia.hymsk.spring.pojo.Response;
import asia.hymsk.spring.service.ProductService;
import asia.hymsk.spring.utils.JwtUtils;
import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
import org.springframework.web.bind.annotation.*;

/**
 * @author 花于陌上开
 */
@CrossOrigin  //允许跨域访问
@RestController
@RequestMapping("/product/")
public class ProductController {
    final ProductService productService;

    public ProductController(ProductService productService) {
        this.productService = productService;
    }

    /**
     * 用户进行评分
     *
     * @param productId 商品id
     * @param token     用户token
     * @param mark      打分(0-5)
     * @return 返回信息
     */
    @Log
    @PostMapping("/do/mark/")
    public Response doMark(Integer productId, String token, Double mark) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return productService.doMark(productId,userName,mark);
    }

    /**
     * 获取商品信息列表
     *
     * @param productId 商品id
     * @return 返回信息
     */
    @Log
    @GetMapping("/data/")
    public Response dataList(Integer productId) {
        return productService.dataList(productId);
    }

    /**
     * 获取商品信息列表
     *
     * @param productId 商品id
     * @return 返回信息
     */
    @Log
    @GetMapping("/data/details/")
    public Response dataDetails(Integer productId) {
        return productService.dataDetails(productId);
    }


    /**
     * 获取商品发布列表
     *
     * @param token 用户token
     * @return 返回信息
     */
    @Log
    @GetMapping("/publish/list/")
    public Response publishList(String token) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return productService.publishList(userName);
    }

    /**
     * 发布商品
     * @param token       用户token
     * @param productName 商品名
     * @param picture     商品图片(base64格式)
     * @param productDesc 商品描述
     * @param productType 商品标签列表
     * @return 返回信息
     */
    @Log
    @PostMapping("/publish/")
    public Response publishProduct(String token, String productName, String picture, String productDesc, String[] productType) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return productService.publishProduct(userName,productName,picture,productDesc,productType);
    }

    /**
     * 修改商品信息
     * @param token       用户token
     * @param productName 商品名
     * @param picture     商品图片(base64格式)
     * @param productDesc 商品描述
     * @param productType 商品标签列表
     * @return 返回信息
     */
    @Log
    @PostMapping("/alert/")
    public Response alertProduct(String token, String productName, String picture, String productDesc, String[] productType) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return productService.alterProduct(userName,productName,picture,productDesc,productType);
    }
}

